<html>
<head>
  <title>MediaGoblin (and OpenPhoto!) at Federated Social Web 2012: a recap</title>
  <meta name="date" content="2012-10-29 10:30" />
  <meta name="author" content="Christopher Allan Webber" />
</head>
<body>
<p>
  This last Friday, MediaGoblin contributors
  <a href="http://wandborg.se/">Joar Wandborg</a>, Aeva Ntsc,
  and myself all went to the
  <a href="http://www.w3.org/2005/Incubator/federatedsocialweb/wiki/Federated_Social_Web_Summit_2012">Federated
  Social Web Summit 2012</a>.  And we weren't alone!  There
  were <a href="http://www.w3.org/2005/Incubator/federatedsocialweb/wiki/Federated_Social_Web_Summit_2012/Invitations">many
  brilliant minds thinking about federation issues</a> at the summit.
</p>

<p class="centered">
  <img src="/blog_images/fed_social_web_summit_conversations.jpg"
       alt="Conversations happening at the federated social web summit" />
  <br />
  <i><a href="http://www.jezra.net/">Jezra</a> on the left, David Crossland of
  <a href="http://openfontlibrary.org/">Open Font Library</a> on the
  right, and I forget whose back of the head that is.</i>
</p>

<p>
  There was a lot of exciting conversation going on generally, from
  conversations about standards like
  <a href="https://datatracker.ietf.org/doc/draft-prodromou-dialback/">dialback
  authentication</a>, to various applications implementing federation,
  to various conversations about how we can make the user experiences
  of federation and etc better.  If you're interested, you might be
  interested in checking out the
  <a href="https://etherpad.mozilla.org/fsw">etherpad document</a>
  that some were annotating during the summit.
</p>

<p>
  But what I was <i>really</i> interested in discussing at the summit
  was how to get federation working nicely in regards to media
  publishing.  And I'm happy to say that we had a wonderful set of
  conversations about that!  In fact, the conversations were made even
  better from the presence of Jaisen Mathai of
  <a href="http://theopenphotoproject.org/">OpenPhoto</a>!
</p>

<p>
  Sometimes people ask if MediaGoblin and OpenPhoto (which were both
  announced within a short time period) know about each other.  They
  sometimes wonder... are you bitter enemies?  Do you battle?  If the
  project leaders in a room together and shook them up, would they
  break into fisticuffs?
</p>

<p class="centered">
  <img src="/blog_images/jaisen_chris_fake_fighting.jpg"
       alt="Jaisen and Chris... fighting??" />
</p>

<p>
  Actually, the answer is that we <i>do</i> know about each
  other... Jaisen and I have been in communication since fairly early
  on and are both in support of each others' projects.  We see
  ourselves as allies trying to tackle similar problem domains from
  different angles.  And one thing we're both interested in is getting
  our projects to be interoperable as in terms of federation!
</p>

<p class="centered">
  <img src="/blog_images/jaisen_chris_getting_along.jpg"
       alt="Jaisen and Chris... actually we get along :)" />
</p>

<p>
  There were several major issues we wanted to discuss in making
  federation nice between instances:
  <ul>
    <li>
      Subscribing to users across instances
    </li>
    <li>
      Favoriting across instances
    </li>
    <li>
      Cross-instance collections/galleries (think Flickr pool)
    </li>
    <li>
      How to make presentation look good across instances
    </li>
    <li>
      Making things private, and different types of actions/permissions
    </li>
  </ul>
</p>

<p>
  That's a big set of problems, and not super easy to solve!  I typed
  up a bunch of notes from our conversation... here they are,
  distilled a bit:
</p>

<ul>
  <li>
    <p>
      Okay, good news first!  For the most part, subscribing to
      instances already works fine with
      <a href="https://code.google.com/p/pubsubhubbub/">PubSubHubbub</a>.
      It works fine for existing "subscription" type federation, and
      will probably just work fine for subscribing to other peoples'
      galleries here too.  You can see here
      a <a href="http://identi.ca/conversation/96745947#notice-97586076">thread</a>
      with me talking from
      <a href="http://identi.ca/">identi.ca</a> to netziens
      of <a href="http://rainbowdash.net/">rainbowdash.net</a> (a
      brony community hosted on statusnet) who suddenly realized I
      used them in a federation example in the
      <a href="/pages/campaign.html">campaign video</a>.
    </p>
    <p>
      <img src="/blog_images/statusnet_federation_works_fine.png"
           alt="Actual subscriptions showing up works fine" />
    </p>
    <p>
      When you think of the subscription needs of showing a gallery
      with thumbnails, such as on MediaGoblin, this same type of
      system should work well enough.
    </p>
  </li>
  <li>
    <p>
      A bigger concern is, "what to do about mismatched thumbnail
      sizes?" and other display issues.  OpenPhoto currently takes the
      approach where you can request any image size you want and it'll
      make and cache it for you on the fly.  We can't really do that
      for MediaGoblin: this doesn't really work for audio and video
      (and while I like the idea I'm still not sure it's a great one
      for images either, especially not given MediaGoblin's processing
      infrastructure).  If we want galleries to really look nice
      across instances it would be good to agree on some "common"
      thumbnail sizes and etc, as well as having adaptive CSS for the
      cases where a "good fit" thumb is not provided.
    </p>
  </li>
  <li>
    <p>
      For this all to really work, taking actions on remote instances
      has got to get easier.  For example, subscribing to users on
      another instance is still a huge pain in the ass on StatusNet
      instances.  For example, subscribing to someone on another
      instance is a huge pain in the butt... if you're on another
      site, you have to tell it where your user is before you can do
      anything:
    </p>
    <p>
      <img src="/blog_images/annoying_subscribe.png"
           alt="Subscribing can be annoying." />
    </p>
    <p>
      And even after that you have to confirm on your own site.  This
      is an awkward user interface, even though it works for these
      things.  But it doesn't work for everything... if I just
      subscribed to a user and they had an old post that I'd like to
      favorite, I can't do so because it isn't on my timeline.  And
      even if it is on my timeline, I have to dig through the history
      to find it instead of just favoriting it from the site that I
      found it on.  That's a frustrating user experience... but like
      many user experience frustrations with federation, it's
      frustrating for a reason: it's a hard problem to solve.
    </p>
  </li>
  <li>
    <p>
      Luckily it looks like there's a good way forward to making
      this easier.  There's work being done in the proposals
      of <a href="https://wiki.mozilla.org/WebAPI/WebActivities">WebActivities</a>
      and <a href="http://webintents.org/">WebIntents</a> which are
      standards which should help in the process of saying "When I do X
      task (such as favoriting, subscribing, or adding to a collection),
      I want to use Y service".  There are a whole bunch of tasks that
      will need such functionality to have a clean implementation.
    </p>
    <p>
      I'm not sure this solves All The Things; I'm not sure how you'd
      get an indication of whether or not you've already favorited
      such a thing on a remote site without having some sort of
      security vulnerability or privacy issues, and I haven't looked
      at the spec enough to see if that's exposed.  But it definitely
      looks like it's going to help things go in the right direction,
      and we'll need it for a lot of stuff to feel smooth:
      subscribing, favoriting, adding to collections, etc.
    </p>
  </li>
  <li>
    <p>
      How to handle private sharing across instances?  Probably
      something like <a href="http://www.salmon-protocol.org/">Salmon</a>
      might be right, but it's a tricky problem.  The topic of "what
      happens if someone makes something available to you but then
      retracts that" came up.  Frankly, on the web, it's impossible to
      fully retract something and trying to force it often makes the
      situation worse (AKA the
      <a href="http://en.wikipedia.org/wiki/Streissand_effect">Streissand
        effect</a>).  It's possible that servers might publish a deletion
      notice and that could be interpreted as a "please" remove issue,
      but that's probably not enforcable.  Furthermore, there are a
      whole series of issues with implementing privacy right.  We agreed
      this is something that we'd like to do, but that getting media
      federation to work at all correctly publicly is a bigger first
      priority.
    </p>
  </li>

  <li>
    <p>
      There was a bit of discussion about how to handle some other
      actions, such as Jaisen suggesting a button to mirror content onto
      your instance.  (I thought this was interesting; in the past, a
      good number of people have suggested that we implement mirroring
      the content of people you subscribed to, and I've said that I
      think this is a bad default but that we could have a "diskgobbler"
      plugin in the future or etc.  This solution actually sounds more
      interesting to me.)  There might be additional actions too, such
      as "get a print", or even with 3d models, "send to a botfarm to 3d
      print" (well, that requires some future 3d printing botfarm
      infrastructure that doesn't exist yet, but I know Aeva is thinking
      about it), or maybe even "play on a stereo TV at home".  These are
      interesting ideas, and not necessarily directly federation
      related, but it was interesting to discuss how they might be done
      by having some activity represented in an
      <a href="http://activitystrea.ms/">Activity Streams</a> feeds and
      how webactions/webintents might play in.
    </p>
  </li>
</ul>

<p>
  Anyway, we left with a lot to think about, which is good given that
  federation is a big next step on the agenda once the
  <a href="/pages/campaign.html">campaign</a> wraps up.  And 
  events like this are great opportunities to connect... in this case,
  it was both great to meet up with other MediaGoblin folks (this is
  the first time I'd ever met Joar in person)!
</p>

<p class="centered">
  <img src="/blog_images/joar_at_fed_websummit.jpg"
       alt="Joar at the federated social web summit" />
</p>

<p>
  Furthermore, if federation is going to succeed, it's going to
  require the hard work and collaboration between a bunch of projects.
  So I'm glad that Jaisen of OpenPhoto was around for us to have such
  conversations!
</p>

<p class="centered">
  <img src="/blog_images/jaisen_and_chris.jpg"
       alt="Jaisen and Chris... free software media publishing unite!" />
</p>

<p>
  While we're at it, I might as well remind you!  We're in the middle
  of a crowdfunding campaign, and all the above is an exciting future,
  but its success depends on whether or not we can get focused
  development in to MediaGoblin.  This is why I'm asking you: if you
  haven't yet donated to MediaGoblin, <i>please</i> do so!  The future
  of media decentralization is in your hands!
</p>

<p class="centered">
  <a href="/pages/campaign.html">
    <img src="/blog_images/support_mediagoblin-blagpost.png"
         alt="Gavroche imploring you to support mediagoblin!" />
  </a>
</p>
</body>
</html>